public class LeetCode226 {
    public TreeNode invertTree(TreeNode node) {
        // 如果当前节点为空，则返回null，表示空树或到达了叶子节点的子节点
        if (node == null) {
            return null;
        }

        // 交换当前节点的左右子节点
        TreeNode temp = node.left;     // 暂存左子节点
        node.left = node.right;        // 将右子节点赋给左子节点
        node.right = temp;             // 将暂存的左子节点赋给右子节点

        // 递归调用 invertTree 来翻转左子树（已交换，原来是右子树）
        invertTree(node.left);

        // 递归调用 invertTree 来翻转右子树（已交换，原来是左子树）
        invertTree(node.right);

        // 返回已经翻转过的当前节点
        return node;
    }
}
